SQL Blacklist
It is used to limit the query statement, and does not limit the execution of the explain statement. Support to configure SQL blacklist by user:
Reject the specified SQL by means of regular matching
Check if a query hits one of these limits by setting partition_num, tablet_num, cardinality
- partition_num, tablet_num, cardinality can be set together, once a query reaches one of the limits, the query will be blocked
Add、delete、modify and query SQL rules
Create SQL block rules, for more creation syntax, please refer to
CREATE SQL BLOCK RULE
- sql: matching rules (based on regular matching, special characters need to be translated), optional, the default value is "NULL"
- sqlHash: sql hash value, used for exact match, we will
fe.audit.log
print this value, optional, this parameter and sql can only choose one, the default value is "NULL" - partition_num: The maximum number of partitions that a scanning node will scan, the default value is 0L
- tablet_num: The maximum number of tablets that a scanning node will scan, the default value is 0L
- cardinality: the rough scan line number of a scan node, the default value is 0L
- global: Whether to take effect globally (all users), the default is false
- enable: whether to enable blocking rules, the default is true
CREATE SQL_BLOCK_RULE test_rule
PROPERTIES(
"sql"="select \\* from order_analysis",
"global"="false",
"enable"="true",
"sqlHash"=""
)
Notice:
Here, the sql statement should not have a semicolon at the end
When we execute the sql we defined in the rules just now, an abnormal error will be returned. The example is as follows:
mysql> select * from order_analysis;
ERROR 1064 (HY000): errCode = 2, detailMessage = sql match regex sql block rule: order_analysis_rule
- Create test_rule2, limit the maximum number of scanned partitions to 30, and the maximum scan base to 10 billion rows. The example is as follows:
CREATE SQL_BLOCK_RULE test_rule2 PROPERTIES("partition_num" = "30", "cardinality"="10000000000","global"="false","enable"="true")
- View the configured SQL blocking rules. If you do not specify a rule name, you will view all the rules. For specific syntax, please refer to SHOW SQL BLOCK RULE
SHOW SQL_BLOCK_RULE [FOR RULE_NAME]
Modify the SQL blocking rules to allow modification of each item such as sql/sqlHash/partition_num/tablet_num/cardinality/global/enable. For specific syntax, please refer to
ALTER SQL BLOCK RULE
- sql and sqlHash cannot be set at the same time. This means that if a rule sets sql or sqlHash, the other property will not be modifiable
- sql/sqlHash and partition_num/tablet_num/cardinality cannot be set at the same time. For example, if a rule sets partition_num, then sql or sqlHash cannot be modified
ALTER SQL_BLOCK_RULE test_rule PROPERTIES("sql"="select \\* from test_table","enable"="true")
ALTER SQL_BLOCK_RULE test_rule2 PROPERTIES("partition_num" = "10","tablet_num"="300","enable"="true")
- Delete SQL blocking rules, support multiple rules to
,
separate, please refer to DROP SQL BLOCK RULR for specific syntax
DROP SQL_BLOCK_RULE test_rule1,test_rule2
User rule binding
If you configure global=false, you need to configure the rule binding for the specified user, and multiple rules are ,
separated
SET PROPERTY [FOR 'jack'] 'sql_block_rules' = 'test_rule1,test_rule2'